/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cube.estructura.per;

import cube.estructura.obj.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Leonardo
 */
public class UsuarioPer
{  
   public static Usuario obtenerUsuario(Connection con, long xIdUsuario) throws Exception
   {
        Usuario objUsuario = new Usuario();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                       "from USUARIO "+
                                                         "where ID_USUARIO=? ");
            st.setLong(1, xIdUsuario);

            ResultSet resultado = st.executeQuery();

            if(resultado.next())
            {
                objUsuario.setIdUsuario(resultado.getLong("ID_USUARIO"));
                objUsuario.setEmail(resultado.getString("EMAIL"));
                objUsuario.setNombres(resultado.getString("NOMBRES"));
                objUsuario.setApellidos(resultado.getString("APELLIDOS"));
                objUsuario.setTelefono(resultado.getString("TELEFONO"));
                objUsuario.setDireccion(resultado.getString("DIRECCION"));
                objUsuario.setPassword(resultado.getString("PASSWORD"));
                objUsuario.setCedula(resultado.getString("CEDULA"));
                objUsuario.setFechaNacimiento(resultado.getString("FECHA_NACIMIENTO"));
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return objUsuario;
   }

   public static boolean existeUsuario(Connection con, long xIdUsuario) throws Exception
   {
        try
        {
            PreparedStatement st=con.prepareStatement("select count(*) as EXISTE " +
                                                      "from USUARIO " +
                                                         "where ID_USUARIO=? ");

            st.setLong(1, xIdUsuario);

            ResultSet resultado = st.executeQuery();

            if (resultado.next())
            {
                if (resultado.getInt("EXISTE")==0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return false;
   }

   public static ArrayList<Usuario> obtenerColeccionUsuario(Connection con) throws Exception
   {
        ArrayList colUsuario = new ArrayList();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                      "from USUARIO");

            ResultSet resultado = st.executeQuery();

            while (resultado.next())
            {
                Usuario objUsuario = new Usuario();

                objUsuario.setIdUsuario(resultado.getLong("ID_USUARIO"));
                objUsuario.setEmail(resultado.getString("EMAIL"));
                objUsuario.setNombres(resultado.getString("NOMBRES"));
                objUsuario.setApellidos(resultado.getString("APELLIDOS"));
                objUsuario.setTelefono(resultado.getString("TELEFONO"));
                objUsuario.setDireccion(resultado.getString("DIRECCION"));
                objUsuario.setPassword(resultado.getString("PASSWORD"));
                objUsuario.setCedula(resultado.getString("CEDULA"));
                objUsuario.setFechaNacimiento(resultado.getString("FECHA_NACIMIENTO"));

                colUsuario.add(objUsuario);
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return colUsuario;
    }

    public static void altaUsuario(Connection con, Usuario xObjUsuario) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("insert into USUARIO " +
                                                      "values (?,?,?,?,?,?,?,?,?)");

            st.setLong(1, xObjUsuario.getIdUsuario());
            st.setString(2, xObjUsuario.getEmail());
            st.setString(3, xObjUsuario.getNombres());
            st.setString(4, xObjUsuario.getApellidos());
            st.setString(5, xObjUsuario.getTelefono());
            st.setString(6, xObjUsuario.getDireccion());
            st.setString(7, xObjUsuario.getPassword());
            st.setString(8, xObjUsuario.getCedula());
            st.setString(9, xObjUsuario.getFechaNacimiento());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void bajaUsuario(Connection con, Usuario xObjUsuario) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("delete from USUARIO " +
                                                         "where ID_USUARIO=? ");

            st.setLong(1, xObjUsuario.getIdUsuario());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void modificaUsuario(Connection con, Usuario xObjUsuario) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("update USUARIO " +
                                                      "set EMAIL=?, "+
                                                      "NOMBRES=?, "+
                                                      "APELLIDOS=?, "+
                                                      "TELEFONO=?, "+
                                                      "DIRECCION=?, "+
                                                      "PASSWORD=?, "+
                                                      "CEDULA=?, "+
                                                      "FECHA_NACIMIENTO=? "+
                                                         "where ID_USUARIO=? ");

            st.setString(1, xObjUsuario.getEmail());
            st.setString(2, xObjUsuario.getNombres());
            st.setString(3, xObjUsuario.getApellidos());
            st.setString(4, xObjUsuario.getTelefono());
            st.setString(5, xObjUsuario.getDireccion());
            st.setString(6, xObjUsuario.getPassword());
            st.setString(7, xObjUsuario.getCedula());
            st.setString(8, xObjUsuario.getFechaNacimiento());
            st.setLong(9, xObjUsuario.getIdUsuario());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }
}
